Vim 文本对象:终极指导

要Text Objects在 Vim 有效地编辑,你不应当按字符编辑,而应当是按词、按句、按段。在 Vim 中,这三种高级上下文被称为 文本对象 (Text Objects)。Vim 为纯文本和代码都提供了文本对象。你也可以在 Vim 脚本中定义新的文本对象。学习文本对象可以使你编辑的速度和精确度都得到提升

编辑命令的结构

在 Vim 中,编辑命令具有以下结构 :

<数字><命令><文本对象或 motion>
  • 数字代表在多少个文本对象或 motion 上执行操作,例如删除三个词或两个段落。数字是可选的,而且可以出现在命令的后面

  • 命令是一个操作。例如 Change, Delete, Copy。命令也是可选的,但是没它的时候你只是执行了 motion 来移动光标,而没有执行编辑操作

  • 文本对象可以是一个文字结构,例如一个词或者一个段落。motion 可以是前进一行、后退一段、进入行尾

一个编辑命令是由一个命令加上一个文本对象或 motion,例如删除这个词、更改下一段、复制这一段。

译者注

实际上,可以接文本对象的命令一共有七个:cvdy⇒<

纯文本文本对象

Vim 为纯文本提供了三种文本对象: 词 (Words) 、句子和段落

  • aw - a word(包括周围的空格)

  • iw - inner word (不包含周围的空格)

Lorem ipsum dolor sit amet...

daw

Lorem dolor sit amet...

以 a 开头的文本对象包含周围的空格。motion w 也许被认为和文本对象 aw 相似,但是不同的是 dw 或删除词剩余部分,而 daw 或删除整个词,而不论光标在词的任何位置上

句子

  • as - a sentence

  • is - inner sentence

段落

  • ap - a paragraph

  • ip - inner paragraph

Motion 命令 vs. 文本对象命令

编程语言文本对象

Vim 基于公共编程结构提供了几种文本对象

字符串

  • a" - a 双引号括起的字符串

  • i" - inner 双引号括起的字符串

  • a' - a 单引号括起的字符串

  • i' - inner 单引号括起的字符串

  • a` - a 反引号括起的字符串

  • i` - inner 反引号括起的字符串

括号

      • a 圆括号括起的字符串

      • inner 圆括号括起的字符串

中括号

  • a] - a 中括号括起的字符串

  • i] - inner 中括号括起的字符串

大括号

  • a} - a 大括号括起的字符串

  • i} - inner 大括号括起的字符串

标记语言标签

  • at - a 标签括起的字符串

  • it - inner 标签括起的字符串

Vim 脚本提供的额外文本对象

CamelCaseMotion 提供的文本对象可供在驼峰命名的单词中进行移动

VimTextObj 提供的文本对象可用于函数参数

Indent Object 基于缩进提供了文本对象

Ruby Block 提供了基于 Ruby block 的文本对象

Last moify: 2022-12-04 15:11:33
Build time:2025-07-18 09:41:42
Powered By asphinx